package com.gzc.just.play.last.war.sceneserver.goods;

import com.gzc.just.play.last.war.sceneserver.gameobject.unit.GameUnit;

/**
 * 物品使用事件监听器接口
 *
 * @author AI编程助手
 * @version 1.0
 * @since 2025-11-22
 */
public interface GoodsUseListener {
    
    /**
     * 物品被购买时调用
     *
     * @param goodsId 物品ID
     * @param quantity 购买数量
     * @param totalPrice 总价格
     */
    void onGoodsPurchased(int goodsId, int quantity, int totalPrice);
    
    /**
     * 物品被使用时调用
     *
     * @param goodsId 物品ID
     * @param target 使用目标
     */
    void onGoodsUsed(int goodsId, GameUnit target);
    
    /**
     * 物品被售卖时调用
     *
     * @param goodsId 物品ID
     * @param quantity 售卖数量
     * @param totalGold 获得金币
     */
    void onGoodsSold(int goodsId, int quantity, int totalGold);
    
    /**
     * 物品被装备时调用
     *
     * @param goodsId 物品ID
     */
    void onGoodsEquipped(int goodsId);
    
    /**
     * 物品被卸下时调用
     *
     * @param goodsId 物品ID
     */
    void onGoodsUnequipped(int goodsId);
    
    /**
     * 购买失败时调用
     *
     * @param goodsId 物品ID
     * @param quantity 尝试购买数量
     * @param reason 失败原因
     */
    void onPurchaseFailed(int goodsId, int quantity, String reason);
}
